/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ventas.beans;

import entities.MultiplicadorProductoPedido;
import entities.Pedido;
import entities.Producto;
import facades.MultiplicadorProductoPedidoFacade;
import java.math.BigDecimal;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.inject.Inject;
import org.apache.commons.collections.map.MultiKeyMap;
import qualifiers.resources.MultiplicadoresCategoriasYSexosMap;
import qualifiers.resources.MultplicadoresProductosYPedidosMap;

/**
 *
 * @author damfercer
 */
@Named(value = "multiplicadoresBean")
@Stateless
public class MultiplicadoresBean {
    @Inject
    private MultiplicadorProductoPedidoFacade multiplicadoresFacade;
    @Inject
    @MultplicadoresProductosYPedidosMap
    private MultiKeyMap mapProductosYPedidos;
    @Inject
    @MultiplicadoresCategoriasYSexosMap
    private MultiKeyMap mapCategoriasYSexos;
    
    /**
     * Creates a new instance of MultiplicadoresBean
     */
    public MultiplicadoresBean() {
    }
    
    public BigDecimal recuperarMultiplicadorDeProductoYPedido(Producto producto, Pedido pedido){
        BigDecimal multiplicador=pedido.getCliente().getMultiplicador();
        if(mapProductosYPedidos.containsKey(producto.getIdProducto(), pedido.getIdPedido())){
            MultiplicadorProductoPedido multi=(MultiplicadorProductoPedido)mapProductosYPedidos.get(producto.getIdProducto(), pedido.getIdPedido());
            multiplicador=multi.getMultiplicador();
        }
        else if(mapCategoriasYSexos.containsKey(producto.getC().getIdC(), producto.getSexo().getIdSexo())){
            MultiplicadorProductoPedido multi=(MultiplicadorProductoPedido)mapCategoriasYSexos.get(producto.getC().getIdC(), producto.getSexo().getIdSexo());
            multiplicador=multi.getMultiplicador();
        }
        return multiplicador;
    }
    
    public MultiplicadorProductoPedido recuperarMultiplicadorProductoPedidoDeProductoYPedido(Producto producto, Pedido pedido){
        MultiplicadorProductoPedido multiplicador=null;
        if(mapProductosYPedidos.containsKey(producto.getIdProducto(), pedido.getIdPedido())){
            multiplicador=(MultiplicadorProductoPedido)mapProductosYPedidos.get(producto.getIdProducto(), pedido.getIdPedido());
        }
        else if(mapCategoriasYSexos.containsKey(producto.getC().getIdC(), producto.getSexo().getIdSexo())){
            multiplicador=(MultiplicadorProductoPedido)mapCategoriasYSexos.get(producto.getC().getIdC(), producto.getSexo().getIdSexo());
        }
        return multiplicador;
    }
    
    public void modificarMultiplicadorPedidoYProducto(MultiplicadorProductoPedido multiplicador){
        if(multiplicador.getIdMultiplicadorProductoPedido()!=null){
            multiplicadoresFacade.edit(multiplicador);
        }
        else{
            multiplicadoresFacade.create(multiplicador);
        }
        mapProductosYPedidos.put(multiplicador.getProducto().getIdProducto(), multiplicador.getPedido().getIdPedido(), multiplicador);
    }
    
}
